/**
 * 呵护生活工作室
 * @author leuyiu.van
 * @date 2017年8月30日 下午2:22:47
 * @version 1.0
 */
package org.leuyius.app.colife.common.base.pojo.vo;

/**
 * Description: 所有pojo对象的超类<BR>
 *
 * @author leuyius.van
 * @company: 呵护生活工作室
 * @date 2017年8月30日 下午2:22:47
 * @version 1.0
 */
public class IBaseObj implements Comparable<IBaseObj> {

	private String objId;

	private String objType;

	/**
	 * 构造方法
	 */
	public IBaseObj() {
	}

	public IBaseObj(String objId, String objType) {
		this.objId = objId;
		this.objType = objType;
	}

	public String getObjId() {
		return objId;
	}

	public void setObjId(String objId) {
		this.objId = objId;
	}

	public String getObjType() {
		return objType;
	}

	public void setObjType(String objType) {
		this.objType = objType;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {

		// 先比较对象类型，在比较对象ID
		if (obj == null) {
			return false;
		}

		if (!obj.getClass().equals(this.getClass())) {// 对象类型
			return false;
		}
		IBaseObj baseObj = (IBaseObj) obj;

		return this.getObjType().equals(baseObj.getObjType()) && this.getObjId().equals(baseObj.getObjId());
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		StringBuffer stype = new StringBuffer() ;
		stype.append(objType).append(objId) ;
		return stype.hashCode() ;
	}

	/* (non-Javadoc)
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	@Override
	public int compareTo(IBaseObj o) {
		int typeState = this.objType.compareTo(objType) ;
		if(typeState != 0){
			return typeState ;
		}
		return this.objId.compareTo(objId);
	}
}
